package com.zg.api.domain.convert;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.zg.api.domain.vo.ApiProjectVo;
import com.zg.common.core.dao.apis.entity.ApiProject;
import org.mapstruct.Mapper;

import java.util.List;

/**
 * <p>Description: </p>
 *
 * @author zhanfeng.liang
 * @since 2025/7/9 18:15
 */
@Mapper(componentModel = "spring")
public interface ApiProjectConvert {

    ApiProjectVo toVo(ApiProject apiService);

    ApiProject toEntity(ApiProjectVo apiService);

    List<ApiProjectVo> toVoList(List<ApiProject> users);

    // 带分页的列表转换
//    default Page<ApiProjectVo> toVoPage(Page<ApiProject> userPage) {
//        // 使用 Page 的 convert 方法
//        Page<ApiProjectVo> voPage = new Page<>(userPage.getCurrent(), userPage.getSize());
//        voPage.setRecords(userPage.getRecords().stream()
//                .map(this::toVo)
//                .collect(Collectors.toList()));
//        voPage.setTotal(userPage.getTotal());
//        return voPage;
//    }

    default IPage<ApiProjectVo> toVoPage(Page<ApiProject> userPage) {
        // 使用 Page 的 convert 方法

        return userPage.convert(this::toVo);
    }
    default IPage<ApiProject> toEntityPage(Page<ApiProjectVo> userPage) {
        // 使用 Page 的 convert 方法

        return userPage.convert(this::toEntity);
    }
}
